SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCMOVI_CAJA_I12]    
/*-------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                --*/    
/*---Cliente              : CASSIMELLI                 --*/    
/*---Sistema              : Presupuesto                --*/    
/*---M©dulo               : Empresa                    --*/    
/*---Programa             : Grabaci©n Cabecera         --*/    
/*---                       Movimiento Caja(Egresos)  --*/    
/*---Script               : tcmovi_c.sql               --*/    
/*---Nombre SP            : SP_TCMOVI_CAJA_I12         --*/    
/*---Desarrollado por     : Javier Flores A.           --*/    
/*---Fecha Creaci©n       : 08/07/1999                 --*/    
/*---Base Datos           : Microsoft Sql Server       --*/    
/*---Versi©n              : 7.0                        --*/    
/*---Invoca a SP          :                            --*/    
/*-------------------------------------------------------*/    
    
/*-------------------------------------------------------*/    
/*---Modificado 1 por     :  Carlos R Marquez E        --*/    
/*---Fecha Modificaci©n   :  29/05/2001                --*/     
/*---Detalle Modificaci©n :  Considerac Docs en Cartera--*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/      
/*---Modificado 2 por     : Maribel Julca Rodriguez      --*/      
/*---Fecha Modificaci©n   : 20/04/2005                   --*/       
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI                           --*/      
/*-------------------------------------------------------*/      
  
/*-------------------------------------------------------*/    
/*---Comentarios                                       --*/    
/*---                                                  --*/    
/*---                                                  --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Drop Proc SP_TCMOVI_CAJA_I12                      --*/    
/*---Grant all on SP_TCMOVI_CAJA_I12 to public         --*/     
/*---SP_TCMOVI_CAJA_I12_DENIS                                --*/    
/*-------------------------------------------------------*/    
 @ISCO_EMPR   TD_VC_002,     
 @ISCO_USUA_MODI  TD_VC_008_USUA,    
 @ISCO_CAJA   TD_VC_008,     
 @ISAA_CAJA   TD_VC_004,     
 @ISMM_CAJA   TD_VC_002,     
 @ISTI_MOVI   TD_VC_001,     
 @IDFE_OPER   TD_DT_001,     
 @ISCO_TIPO_OPER  TD_VC_003,     
 @ISCO_SUBR   TD_VC_003,     
 @INFA_TIPO_CAMB  TD_NU_015_006,     
 @INIM_MOVI   TD_NU_016_004,     
 @ISTI_ENTI   TD_VC_001,    
 @ISCO_ENTI   TD_VC_020,     
 @ISDE_NOMB_ORDE  TD_VC_100,     
 @ISDE_OBSE   TD_VC_100,     
 @ISTI_CORR_INEG  TD_VC_001,    
 @INUL_CORR_EGRE  TD_IN_001,    
 @INUL_CORR_INEG  TD_IN_001,    
 @ISCO_ENTR_REND  TD_VC_004,    
 @ISCO_UNID_CNTB  TD_VC_003,    
 @IDFE_DIFE   TD_DT_001,     
 @ISNU_SOLI       TD_VC_010,    
 @ISST_ASTO_RESU TD_VC_001,      
 @ISCO_TIPO_DOCU TD_VC_003,    
 @ISNU_DOCU  TD_VC_020,    
 @ISNU_COMP_CAJA  TD_VC_008 OUTPUT
	As
Declare     
   @VNCO_NUEV_NUME TD_IN_001,     
   @VSCO_NUEV_CHAR TD_VC_008,    
   @VNNU_REGI      TD_IN_001,    
   @VSTI_SITU     TD_VC_003,     
   @VSST_AUXI_0004 TD_VC_001,      
   @VSST_AUXI_0002 TD_VC_001,    
   @VSST_INTE_BACH TD_VC_001,    
   @VSTI_OPNI_CARG TD_VC_003,    
   @VSTI_OPNI_ABON TD_VC_003    
    
  Begin Tran MR_TCMOVI_CAJA_I02    
    
  /** inserta en la cabecera de caja **/    
    
     Select @VSST_INTE_BACH = ST_INTE_BACH,    
 @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER    
     From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR    
    
    
     If Rtrim(@ISCO_ENTR_REND) = ''    
       Select @ISCO_ENTR_REND = NULL    
    
    
      /***---Obtiene Flags para el Tipo de Operacion  ---***/     
     Select  @VSST_AUXI_0004 = IsNull (ST_AUXI_0004,'N'),    
      @VSST_AUXI_0002 = ST_AUXI_0002    
     From    TTTIPO_OPER    
     Where   CO_EMPR = @ISCO_EMPR    
      And CO_TIPO_OPER = @ISCO_TIPO_OPER    
    
      /***---Seteo TI_SITU  en base al Flag del Tipo de Operacion  ---***/     
     Select @VSTI_SITU = ( SubString ('CAR', 1, PatIndex ('S',@VSST_AUXI_0004)*3) + SubString ('ACT', 1, PatIndex 
('N',@VSST_AUXI_0004)*3) )    
    
    /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/     
    If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND     
 @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON    
        
 Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR,@ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_CAJA OUTPUT    
    
    Else    
 Begin    
      Select @VNNU_REGI = Count(*)     
      From TCMOVI_CAJA    
      Where CO_EMPR = @ISCO_EMPR     
       And CO_CAJA = @ISCO_CAJA    
       And AA_CAJA = @ISAA_CAJA    
       And MM_CAJA = @ISMM_CAJA    
       And TI_MOVI = 'E'      
       And NU_COMP_CAJA = @ISNU_COMP_CAJA    
    
      If @VNNU_REGI > 0 OR RTRIM(ISNULL(@ISNU_COMP_CAJA, '')) = ''    
    Begin             
           Select  @VSCO_NUEV_CHAR = ISNULL(MAX(NU_COMP_CAJA), '0')     
           From    TCMOVI_CAJA    
    Where   CO_EMPR = @ISCO_EMPR     
             And CO_CAJA = @ISCO_CAJA    
             And AA_CAJA = @ISAA_CAJA    
             And MM_CAJA = @ISMM_CAJA     
             And TI_MOVI = 'E'      
    And NU_COMP_CAJA LIKE '000%'    
    
           Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1    
    
           Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)    
    
           -- RELLENA DE CEROS HASTA 8 CARACTERES     
    Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'') 
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))    
    
           Select @ISNU_COMP_CAJA = @VSCO_NUEV_CHAR     
         End    
    
 End    
    
     Insert Into TCMOVI_CAJA(     
		CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA, FE_OPER,     
		CO_TIPO_OPER, CO_SUBR, FA_TIPO_CAMB, IM_MOVI,  TI_ENTI, CO_ENTI, DE_ENTI,     
		DE_OBSE, ST_CONT, NU_PROC, TI_SITU, CO_ENTR_REND, CO_USUA_CREA, FE_USUA_CREA, 
		CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, FE_DIFE, NU_SOLI, CO_TIPO_DOCU, NU_DOCU )    
	 Values (     
		@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA, @IDFE_OPER, 
		@ISCO_TIPO_OPER, @ISCO_SUBR, @INFA_TIPO_CAMB, @INIM_MOVI, @ISTI_ENTI, @ISCO_ENTI, @ISDE_NOMB_ORDE, 
		@ISDE_OBSE, 'N', NULL, @VSTI_SITU, @ISCO_ENTR_REND, @ISCO_USUA_MODI, GETDATE(), 
		@ISCO_USUA_MODI, GETDATE(), @ISCO_UNID_CNTB, @IDFE_DIFE, @ISNU_SOLI, @ISCO_TIPO_DOCU, @ISNU_DOCU )    
    
    If @@error <> 0    
       Begin    
         Rollback tran    
    Return    
       End        
    
   /* ----------- Actualiza los Correlativos ------------------ */    
    If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR     
 @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON    
      Begin        
    
   If @ISTI_CORR_INEG = 'N'    
             Begin    
      
  Select  @INUL_CORR_EGRE = UL_CORR_EGRE    
         From  TMSACA_MENS    
         WHERE  CO_EMPR = @ISCO_EMPR      
            AND CO_CAJA = @ISCO_CAJA    
            AND AA_CAJA = @ISAA_CAJA    
            AND MM_CAJA = @ISMM_CAJA     
    
    
         Update  TMSACA_MENS    
         Set UL_CORR_EGRE = @INUL_CORR_EGRE + 1, CO_USUA_MODI = @ISCO_USUA_MODI,     
                      FE_USUA_MODI = GETDATE()    
          Where   CO_EMPR = @ISCO_EMPR     
                And CO_CAJA = @ISCO_CAJA    
                And AA_CAJA = @ISAA_CAJA     
                And MM_CAJA = @ISMM_CAJA    
    
         If @@error <> 0    
                 Begin    
                   Rollback tran    
              Return    
                 End    
             
      End    
     Else    
             Begin    
      
  Select  @INUL_CORR_INEG = UL_CORR_INEG    
         From  TMSACA_MENS    
         WHERE  CO_EMPR = @ISCO_EMPR      
            AND CO_CAJA = @ISCO_CAJA    
            AND AA_CAJA = @ISAA_CAJA    
            AND MM_CAJA = @ISMM_CAJA     
    
    
         Update  TMSACA_MENS    
         Set UL_CORR_INEG = @INUL_CORR_INEG + 1, CO_USUA_MODI = @ISCO_USUA_MODI,     
                      FE_USUA_MODI = GETDATE()    
          Where   CO_EMPR = @ISCO_EMPR     
                And CO_CAJA = @ISCO_CAJA    
                And AA_CAJA = @ISAA_CAJA     
                And MM_CAJA = @ISMM_CAJA    
    
         If @@error <> 0    
                 Begin    
      Rollback tran    
              Return    
                 End    
             
        End    
    
 End    
    
 Commit Tran    
    
--SELECT @ISNU_COMP_CAJA    
RETURN    
    
/*--------------------------------- Fin ---------------------------------*/


GO
